
深拷贝

export function type(obj) {
  var toString = Object.prototype.toString
  var map = {
    '[object Boolean]': 'boolean',
    '[object Number]': 'number',
    '[object String]': 'string',
    '[object Function]': 'function',
    '[object Array]': 'array',
    '[object Date]': 'date',
    '[object RegExp]': 'regExp',
    '[object Undefined]': 'undefined',
    '[object Null]': 'null',
    '[object Object]': 'object'
  }
  return map[toString.call(obj)]
}

export function deepClone(data) {
  var t = type(data); var o; var i; var ni

  if (t === 'array') {
    o = []
  } else if (t === 'object') {
    o = {}
  } else {
    return data
  }

  if (t === 'array') {
    for (i = 0, ni = data.length; i < ni; i++) {
      o.push(deepClone(data[i]))
    }
    return o
  } else if (t === 'object') {
    for (i in data) {
      o[i] = deepClone(data[i])
    }
    return o
  }
}

&nbsp;
&nbsp;
see them...

// 获取网址的get参数
var GET = function(name) {
  var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");
  var r = window.location.search.substr(1).match(reg);
  if (r != null) return (r[2]);
  return null;
}

&nbsp;

// 13位时间戳转日期
var getLocalTime = function(nS) {
  //return new Date(parseInt(nS)).toLocaleString().replace(/:\d{1,2}$/,' ');
  var date = new Date(nS);
  var Y = date.getFullYear() + '/';
  var M = (date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1) + '/';
  var D = (date.getDate() < 10 ? '0' + (date.getDate()) : date.getDate()) + ' ';
  var h = date.getHours() + ':';
  var m = (date.getMinutes() < 10 ? '0' + (date.getMinutes()) : date.getMinutes()) + ' ';
  //var s = date.getSeconds();
  return Y + M + D + h + m;
}

&nbsp;

// 数组对象排序  data.sort(keysrt("firstWord"));
var keysrt = function(propertyName) {
  return function(object1, object2) {
    var value1 = object1[propertyName];
    var value2 = object2[propertyName];
    if (value2 < value1) {
      return 1;
    } else if (value2 > value1) {
      return -1;
    } else {
      return 0;
    }
  }
}

&nbsp;

// 判断数据类型
function type(elem) {
  if (elem == null) {
    return elem + '';
  }
  return toString.call(elem).replace(/[\[\]]/g, '').split(' ')[1].toLowerCase();
}

&nbsp;

// 判断数组元素是否重复
isArrRepeat(arr) {
  var _arr = arr.sort();
  console.log(_arr)
  for (var i = 0; i < _arr.length; i++) {
    if (_arr[i] === _arr[i + 1]) {
      return true;
    }
  }
  return false;
}

&nbsp;
截流防抖

function throttle(fn ,wait) {
  let flag = false;
  return function() {
    if (flag) return;
    flag = true;    fn.call(this, arguments);
    setTimeout(() => {
      flag = false;
    }, wait);
  }
}


function debounce(fn, wait) {
  let timer;
  return function() {
    if (timer) clearTimeout(timer);
    timer = setTimeout(() => {
      timer = null;
      fn.call(this, arguments);
    }, wait);
  }
}

&nbsp;
